

RELEASE NOTES FOR VAX C V2.3


These notes contain information on the  following  aspects  of  VAX  C
V2.3:

      o  Functional Enhancements

      o  Restrictions

      o  Documentation Errata

      o  VAX C Run-Time Library Functions


VAX C V2.3 contains several bug  fixes  and  SPR  fixes.   Details  of
changes   made  as  a  result  of  SPRs  can  be  found  in  the  file
SYS$LIBRARY:VAXCSPR.DAT.

Note that the VAX C Run-Time Library (RTL) is  no  longer  distributed
with  VAX  C.   It  is  now  being  distributed  with the VMS Run-Time
Library.  In addition, as of VMS V4.4, RTL  object  libraries  are  no
longer  shipped with MicroVMS.  Therefore, you are required to use the
VAX C shareable libraries.  If you  are  linking  a  C  program  on  a
MicroVAX  system  and  you are not using the G-float option, enter the
following command:

$ LINK prog-name, SYS$INPUT: /OPTIONS 
SYS$SHARE:VAXCRTL.EXE/SHARE  
CTRL/Z

If you are using the G-float option, use the following command:

$ LINK prog-name, SYS$INPUT: /OPTIONS 
SYS$SHARE:VAXCRTLG.EXE/SHARE  
CTRL/Z

FUNCTIONAL ENHANCEMENTS

The following list documents the functional enhancements provided with
VAX  C  V2.3.  All chapters and appendixes referenced in this list are
contained in the Guide to VAX C.

      o  VAX C allows you to generate static analysis data  files  for
         VAXSCA.    The   /ANALYSIS_DATA  qualifier  will  signal  the
         compiler to produce the data file.  For more information, see
         Chapter 1, Developing VAX C Programs at DCL Command Level.

      o  VAX C allows you  to  use  function  prototypes  in  function
         declarations.   By  using  prototypes, you specify the number
         and the data type of the arguments in a function declaration.
         The  compiler  checks  the  argument  specifications  in  the
         prototype, and provides error  checking  and  necessary  data
         type  conversions.  For more information, refer to Chapter 3,
         Program Structure.










                                                                Page 2


      o  VAX C supports the volatile and const data  type  specifiers.
         For  more  information,  refer  to  Chapter 6, Data Types and
         Declarations.

      o  VAX C  supports  variant  structure  and  union  declarations
         nested  within  structure  or  union  declarations.  For more
         information, refer to Chapter 6, Data Types and Declarations.

      o  VAX C provides a way for you to align  data  on  byte,  word,
         longword,  quadword,  octaword, or page boundaries.  For more
         information,  refer  to  Chapter  7,  Storage   Classes   and
         Allocation.

      o  VAX C supports the #elif and #pragma preprocessor directives.
         For  more  information,  refer  to  Chapter  8,  Preprocessor
         Directives.

      o  VAX C includes  the  predefined  macros  __DATE__,  __FILE__,
         __LINE__,  and  __TIME__.   For  more  information,  refer to
         Chapter 8, Preprocessor Directives.

      o  VAX C provides several new  diagnostic  messages.   For  more
         information, refer to Appendix C, VAX C Compiler Messages.


RESTRICTIONS

The following list represents some restrictions of VAX C V2.3:

      o  You cannot link modules created by the VAX C  V1.n  compilers
         with  modules  created by the VAX C V2.n compilers.  You must
         recompile your code.

      o  You should avoid using the underscore as the first  character
         in  program  identifiers  since  VAX C uses the underscore to
         identify implementation-specific macros  and  keywords.   For
         more information, refer to Chapter 3, Program Structure.

      o  The V2.3 compiler provides new debugger  support  to  examine
         split-lifetime   variables.    Split-lifetime  variables  are
         allocated to different registers over the course  of  program
         execution  or  are  eliminated by value propagation.  In some
         instances, a system prior  to  VMS  V4.6  will  generate  the
         following error message:

         %DEBUG-E-INTERR, internal DEBUG error in
         RSTCNTRL\MERGE_CONTINUATION_DST

         To  avoid  this  error,  compile  the  affected  module  with
         /OPTIMIZE=NODISJOINT.


DOCUMENTATION ERRATA

VAX C now allows you to specify the  data  type  void  with  pointers.









                                                                Page 3


This is not indicated in the documentation on pointers.

The following .H files are not described in the documentation but  are
available in this release of VAX C.

      o  ASSERT.H -- Defines the assert macro.

      o  PROCESSES.H -- Defines subprocess functions.

      o  SHRDEF.H -- Defines system message code definitions of shared
         messages.

      o  SMGMSG.H -- Defines the return status code of SMG.  Note that
         this definition module is also included in SMGDEF.H.

      o  STDARG.H -- Defines access to variable-length argument lists.

      o  STDDEF.H -- Defines commonly used macros.

      o  STDLIB.H -- Defines standard types and macros.

      o  STRING.H -- Defines string functions.

      o  UNIXIO.H -- Defines UNIX emulation functions.


VAX C RUN-TIME LIBRARY FUNCTIONS

The following VAX C Run-Time Library functions are available with V4.6
of  VMS.  For more information on each of these functions, see the VAX
C Run-Time Library Reference Manual.

Functions in both the System V Interface Definition and  the  Proposed
ANSI C Language Standard

      o  The asctime function, which  converts  the  broken-down  time
         passed in a predefined structure form into a string.

      o  The assert function, which verifies a program assertion.

      o  The bsearch function, which performs a  binary  search  on  a
         sorted table.

      o  The clock function, which determines the amount of  CPU  time
         used.

      o  The gmtime function, which  converts  calendar  time  into  a
         broken-down time relative to GMT (Greenwich Mean Time).  This
         function exists but includes no functionality.

      o  The memchr, memcmp, memcpy,  memmove,  and  memset  functions
         which perform operations on areas of memory.









                                                                Page 4


      o  The qsort function, which performs a rapid sort.

      o  The setvbuf function, which allows you to specify the type of
         buffers to be used on a FILE.

      o  The strtod, strtol, and strtoul functions which allow you  to
         manipulate strings.  Specifically, the strtod function allows
         you to convert a string to a double-precision number, and the
         strtol and strtoul functions allow you to convert a string to
         an integer or unsigned integer, respectively.

      o  The strtok function, which extracts a token from a string  by
         using a specified set of token delimiters.

      o  The system function, which passes  a  command  string  to  be
         executed by the command processor.

      o  The vprintf, vfprintf, and vsprintf functions, which  perform
         formatted  output  comparable  to  the  printf,  fprintf, and
         sprintf functions.


Functions Defined in the System V Interface Definition

      o  The execlp and execvp functions, which pass the  name  of  an
         image to be activated in a child process.

      o  The  getcwd  function,  which  returns  the  current  working
         directory.

      o  The getppid function, which returns the parent process ID  of
         the calling process.


Functions Defined in the Proposed ANSI C Language Standard

      o  The atexit function, which establishes an action function  to
         be called at program termination time.

      o  The difftime function, which computes the difference  between
         two calendar times.

      o  The div and ldiv functions, which  return  the  quotient  and
         remainder after the division of their arguments.

      o  The  fgetpos  function,  which  returns  the   current   file
         position.   For  information  on  this function, see the HELP
         file.

      o  The  fmod  function,  which   computes   the   floating-point
         remainder of x/y.

      o  The fsetpos function, which sets the current  file  position.
         For information on this function, see the HELP file.








                                                                Page 5


      o  The remove function,  which  deletes  a  closed  file.   This
         function is equivalent to the delete function.

      o  The rename function, which renames a closed file.

      o  The strerror function, which returns a C  RTL  error  message
         string corresponding to a C RTL error code.


Enhancements to Existing Functionality

      o  The fopen and freopen functions  can  now  be  used  to  open
         binary  files  when the access mode contains a 'b' character.
         The 'b'  character  cannot  appear  in  the  first  character
         position of the access mode string.

      o  The printf and scanf functions now perform  formatted  output
         and  input respectively with the addition of three new format
         flags (#, +, space) and the following new format  specifiers:
         i, p, and n.

      o  The ungetc function guarantees one character of push back  at
         all times.  This function is only valid on stream files.  Two
         calls to the ungetc function with no intervening  I/O  is  no
         longer supported.


